home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 4: GNU Archives / Linux Cubed Series 4 - GNU Archives.iso / gnu / sharutil.2 / sharutil / sharutils-4.2 / doc / remsync.info < prev    next >
Encoding:
GNU Info File  |  1995-12-04  |  28.2 KB  |  710 lines

  1. This is Info file remsync.info, produced by Makeinfo-1.63 from the
  2. input file remsync.texi.
  3.  
  4.    This file documents the `remsync' command and friends, which have
  5. the purpose of synchronizing remote directory trees using email.
  6.  
  7.    Copyright (C) 1994 Free Software Foundation, Inc.
  8.  
  9.    Permission is granted to make and distribute verbatim copies of this
  10. manual provided the copyright notice and this permission notice are
  11. preserved on all copies.
  12.  
  13.    Permission is granted to copy and distribute modified versions of
  14. this manual under the conditions for verbatim copying, provided that
  15. the entire resulting derived work is distributed under the terms of a
  16. permission notice identical to this one.
  17.  
  18.    Permission is granted to copy and distribute translations of this
  19. manual into another language, under the above conditions for modified
  20. versions, except that this permission notice may be stated in a
  21. translation approved by the Foundation.
  22.  
  23. 
  24. File: remsync.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
  25.  
  26. `remsync'
  27. *********
  28.  
  29.    `remsync' allows for remote synchronization of directory trees,
  30. using electronic mail.
  31.  
  32.    The current `remsync' release is 1.3.  This is an alpha state
  33. product, and this documentation is still sketchy.
  34.  
  35. * Menu:
  36.  
  37. * Overview::            Overview of `remsync' and friends
  38. * Remsync::             Specifications of program `remsync'
  39. * Services::            Specifications of other service programs
  40. * Formats::             Related file formats
  41. * Miscellaneous::
  42.  
  43.  -- The Detailed Node Listing --
  44.  
  45. Overview of `remsync' and friends
  46.  
  47. * Internals::           How `remsync' works
  48. * Quick start::         Quick start at using `remsync'
  49.  
  50. Quick start at using `remsync'
  51.  
  52. * Invoking remsync::    The `remsync' command and arguments
  53.  
  54. Specifications of program `remsync'
  55.  
  56. * Invoking remsync::    The `remsync' command and arguments
  57. * Conveniences::        Automatic mechanisms in the `remsync' program
  58. * Commands::            Commands for `remsync'
  59.  
  60. The `remsync' command and arguments
  61.  
  62. * Conveniences::        Automatic mechanisms in the `remsync' program
  63. * Commands::            Commands for `remsync'
  64.  
  65. Specifications of other service programs
  66.  
  67. * Invoking mailshar::   The `mailshar' command and arguments
  68. * Invoking mail-files::  The `mail-files' command and arguments
  69. * Invoking find-mailer::  The `find-mailer' command and arguments
  70.  
  71. Related file formats
  72.  
  73. * Xremsync::            Format of the `.remsync' file
  74. * Package::             Format of transiting packages
  75.  
  76. Various considerations
  77.  
  78. * News::                Using News distribution instead?
  79. * Previous::            Documentation for obsolete scripts
  80.  
  81. Documentation for obsolete scripts
  82.  
  83. * mailsync::            mailsync
  84. * resync::              resync
  85.  
  86. 
  87. File: remsync.info,  Node: Overview,  Next: Remsync,  Prev: Top,  Up: Top
  88.  
  89. Overview of `remsync' and friends
  90. *********************************
  91.  
  92.    The `remsync' program allows for transmitting, over email, selected
  93. parts of directories for trying to maintain up-to-date files over many
  94. sites.  It sends out and processes incoming specially packaged files
  95. using `shar', `tar', `gzip' and electronic mail programs.
  96.  
  97.    There is no *master* site, each site has an equal opportunity to
  98. modify files, and modified files are propagated.  Among many other
  99. commands, the `broadcast' command sends an update package from the
  100. current site to all others, the `process' command is used to apply
  101. update packages locally after reception from remote sites.
  102.  
  103.    The unit of transmission is whole files.  For now, whenever a module
  104. is modified, it is silently synchronized only if it has been modified at
  105. only one place.  The merging has to be done at the site where the
  106. discrepancy is observed, from where it is propagated again.
  107.  
  108. * Menu:
  109.  
  110. * Internals::           How `remsync' works
  111. * Quick start::         Quick start at using `remsync'
  112.  
  113. 
  114. File: remsync.info,  Node: Internals,  Next: Quick start,  Prev: Overview,  Up: Overview
  115.  
  116. How `remsync' works
  117. ===================
  118.  
  119.    How does `remsync' keep track of what is in sync, and what isn't?
  120. *Note Xremsync::, for a the documentation on the `.remsync' file
  121. format.  I understand that a mere description of the format does not
  122. replace an explanation, but in the meantime, you might guess from the
  123. format how the program works.
  124.  
  125.    All files are summarized by a checksum, computed by the `sum'
  126. program.  There are a few variants of `sum' computing checksums in
  127. incompatible ways, under the control of options.  `remsync' attempts to
  128. retrieve on each site a compatible way to do it, and complains if it
  129. cannot.
  130.  
  131.    `remsync' does not compare dates or sizes.  Experience shown that the
  132. best version of a file is not necessarily the one with the latest
  133. timestamp.  The best version for a site is the current version on this
  134. site, as decided by its maintainer there, and this is this version that
  135. will be propagated.
  136.  
  137.    Each site has an idea of the checksum of a file for all other sites.
  138. These checksums are not necessarily identical, for sites do not
  139. necessarily propagate to all others, and the propagation network maybe
  140. incomplete or asymmetrical in various ways.
  141.  
  142.    Propagation is never done unattended.  The user on a site has to call
  143. `remsync broadcast' to issue synchronization packages for other sites.
  144. If this is never done, the local modifications will never leave the
  145. site.  The user also has to call `remsync process' to apply received
  146. synchronization packages.  Applying a package does not automatically
  147. broadcast it further (maybe this could change?).
  148.  
  149.    If a site A propagates some files to sites B and D, but not C, site
  150. B is informed that site D also received these files, and site D is
  151. informed that site B also received these files, so they will not
  152. propagate again the same files to one another.  However, both site B
  153. and D are susceptible to propagate further the same files to site C.
  154.  
  155.    It may happen that a site refuses to update a file, or modifies a
  156. file after having been received, or merges versions, or whatever.  So,
  157. sites may have a wrong opinion of the file contents on other sites.
  158. These differences level down after a few exchanges, and it is very
  159. unlikely that a file would not be propagated when it should have.
  160.  
  161.    This scheme works only when the various people handling the various
  162. files have confidence in one each other.  If site B modifies a file
  163. after having received it from site A, the file will eventually be
  164. propagated back to site A.  If the original file stayed undisturbed on
  165. site A, that is, if `remsync' proves that site B correctly knew the
  166. checksum of the original file, then the file will be replaced on site A
  167. without any user confirmation.  So, the user on site A has to trust the
  168. changes made by the user on site B.
  169.  
  170.    If the original file on site A had been modified after having been
  171. sent in a synchronization package, than it is the responsibility of the
  172. user on site A to correctly merge the local modifications with the
  173. modifications observed in the file as received from site B.  This
  174. responsibility is real, since the merged file will later be propagated
  175. to the other sites in an authoritative way.
  176.  
  177. 
  178. File: remsync.info,  Node: Quick start,  Prev: Internals,  Up: Overview
  179.  
  180. Quick start at using `remsync'
  181. ==============================
  182.  
  183. 
  184. File: remsync.info,  Node: Remsync,  Next: Services,  Prev: Overview,  Up: Top
  185.  
  186. Specifications of program `remsync'
  187. ***********************************
  188.  
  189. * Menu:
  190.  
  191. * Invoking remsync::    The `remsync' command and arguments
  192. * Conveniences::        Automatic mechanisms in the `remsync' program
  193. * Commands::            Commands for `remsync'
  194.  
  195. 
  196. File: remsync.info,  Node: Invoking remsync,  Next: Conveniences,  Prev: Remsync,  Up: Remsync
  197.  
  198. The `remsync' command and arguments
  199. ===================================
  200.  
  201.    At the shell prompt, calling the command `remsync' without any
  202. parameters initiates an interactive dialog, in which the user types
  203. commands and receives feedback from the program.
  204.  
  205.    The command `remsync', given at the shell prompt, may have
  206. arguments, in which case these arguments taken together form one
  207. `remsync' interactive command.  However, `--help' and `--version'
  208. options are interpreted especially, with their usual effect in GNU.
  209. Once this command has been executed, no more commands are taken from
  210. the user and `remsync' terminates execution.  This allows for using
  211. `remsync' in some kind of batch mode.  It is unwise to redirect
  212. `remsync' standard input, because user interactions might often be
  213. needed in ways difficult to predict in advance.
  214.  
  215.    The two most common usages of `remsync' are the commands:
  216.  
  217.      remsync b
  218.      remsync p
  219.  
  220.    The first example executes the `broadcast' command, which sends
  221. synchronization packages to all connected remote sites for the current
  222. local directory tree.
  223.  
  224.    The second example executes the `process' command, which studies and
  225. complies with a synchronisation package saved in the current directory
  226. (not necessarily into the synchronized directory tree), under the usual
  227. file name `remsync.tar.gz'.
  228.  
  229. * Menu:
  230.  
  231. * Conveniences::        Automatic mechanisms in the `remsync' program
  232. * Commands::            Commands for `remsync'
  233.  
  234. 
  235. File: remsync.info,  Node: Conveniences,  Next: Commands,  Prev: Invoking remsync,  Up: Remsync
  236.  
  237. Automatic mechanisms in the `remsync' program
  238. =============================================
  239.  
  240.    The following points apply to many of the `remsync' commands.  We
  241. describe them here once and for all.
  242.  
  243.    * The file `.remsync' describes the various properties for the
  244.      current synchronization.  It is kept right in the top directory of
  245.      a synchronized directory tree.  Some commands may be executed
  246.      without any need for this file.  The program waits as far as
  247.      possible before reading it.
  248.  
  249.    * If the `.remsync' file is not found when required, and only then,
  250.      the user is interactively asked to fill a questionnaire about it.
  251.  
  252.    * If the `.remsync' file has been logically modified after having
  253.      been read, or if it just has been created, the program will save
  254.      it back on disk.  But it will do so only before reading another
  255.      `.remsync' file, or just before exit.  A preexisting `.remsync'
  256.      will be renamed to `.remsync.bak' before it is rewritten, when
  257.      this is done, any previous `.remsync.bak' file is discarded.
  258.  
  259.    * Many commands refer to previously entered information by repeating
  260.      this information.  For example, one can refer to a particular
  261.      `scan' statement by entering the wildcard to be scanned by this
  262.      statement.  An alternative method of specifying a statement
  263.      consists in using the decimal number which appears between square
  264.      brackets in the result of a `list' command.
  265.  
  266.    * Whenever a site list must be given, it is a space separated list of
  267.      remote sites.  If the list is preceeded by a bang (!), the list is
  268.      complemented, that is, the sites that will be operated upon are all
  269.      those *not* appearing in the list.  As a special case, if the site
  270.      list is completely empty, then all sites are selected.
  271.  
  272. 
  273. File: remsync.info,  Node: Commands,  Prev: Conveniences,  Up: Remsync
  274.  
  275. Commands for `remsync'
  276. ======================
  277.  
  278.    Program commands to `remsync' may be given interactively by the user
  279. sitten at a terminal.  They can come from the arguments of the
  280. `remsync' call at the shell level.  Internally, the `process' command
  281. might obey many sub-commands found in a received synchronization
  282. package.
  283.  
  284.    Program commands are given one per line.  Lines beginning with a
  285. sharp (#) and white lines are ignored, they are meant to increase
  286. clarity or to introduce user comments.  With only a few exceptions,
  287. commands are introduced by a keyword and often contains other keywords.
  288. In all cases, the keywords specific to `remsync' may be abbreviated to
  289. their first letter.  When there are many keywords in succession, the
  290. space separating them may be omitted.  So the following commands are
  291. all equivalent:
  292.  
  293.      list remote
  294.      l remote
  295.      list r
  296.      l r
  297.      listremote
  298.      lr
  299.  
  300. while the following are not legal:
  301.  
  302.      l rem
  303.      lisremote
  304.  
  305.    Below, for clarity, keywords are written in full and separated by
  306. spaces.  Commands often accept parameters, which are then separated by
  307. spaces.  All available commands are given in the table.  The first few
  308. commands do not pre-require the file `.remsync'.  The last three
  309. commands are almost never used interactively, but rather automatically
  310. triggered while `process''ing received synchronization packages.
  311.  
  312. `?'
  313.      Display a quick help summary of available commands.
  314.  
  315. `!' [ SHELL-COMMAND ]
  316.      If SHELL-COMMAND has been given, execute it right now as a shell
  317.      command.  When not given, rather start an interactive shell.
  318.      Exiting from the shell will return to this program.  The started
  319.      shell is taken from the `SHELL' environment variable if set, else
  320.      `sh' is used.
  321.  
  322. `quit'
  323.      Leave the program normally and return to the shell.
  324.  
  325. `abort'
  326.      Leave the program with a nonzero exit status and return to the
  327.      shell.  No attempt is made to save a logically modified `.remsync'
  328.      file.
  329.  
  330. `visit' DIRECTORY
  331.      Select another synchronized directory tree for any subsequent
  332.      operation.  DIRECTORY is the top directory of the synchronized
  333.      directory tree.
  334.  
  335. `process' [ FILE ]
  336. `list' [ TYPE ]
  337.      List all known statements about some information TYPE.  Allowable
  338.      keywords for TYPE are `local', `remote', `scan', `ignore' and
  339.      `files'.  The keyword `files' asks for all empty statements (see
  340.      later).  If TYPE is omitted, then list all known statements for
  341.      all types, except those given by `files'.
  342.  
  343. [ `create' ] TYPE VALUE
  344.      Create a new statement introducing a VALUE for a given TYPE.
  345.      Allowable keywords for TYPE are `remote', `scan' and `ignore'.
  346.      The `create' keyword may be omitted.
  347.  
  348.      For `create' `ignore', when the pattern is preceeded by a bang
  349.      (!), the condition is reversed.  That is, only those files which
  350.      do match the pattern will be kept for synchronization.
  351.  
  352. `delete' TYPE VALUE
  353.      Delete an existing statement supporting some VALUE for a given
  354.      TYPE.  Allowable keywords for TYPE are `remote', `scan' and
  355.      `ignore'.
  356.  
  357. `email' REMOTE VALUE
  358.      Modify the electronic mail address associated with some REMOTE
  359.      site, giving it a new VALUE.  The special `local' keyword for
  360.      REMOTE may be used to modify the local electronic mail address.
  361.  
  362. `home' REMOTE VALUE
  363.      Modify the top directory of the synchronized directory tree
  364.      associated with some REMOTE site, giving it a new VALUE.  The
  365.      special `local' keyword for REMOTE may be used to modify the local
  366.      top directory.
  367.  
  368. `broadcast' SITE_LIST
  369.      Send by electronic mail an update package to all sites from
  370.      SITE_LIST, containing for each site all and only those files which
  371.      are known to be different between the remote site and here.
  372.  
  373. `version' VERSION
  374.      This command is not meant for interactive use.  It establishes the
  375.      `remsync' version needed to process the incoming commands.
  376.  
  377. `from' SITE_LIST
  378.      This command is not really meant for interactive use.  The first
  379.      site from the SITE_LIST is the remote site which originated the
  380.      synchronization package.  All the others are all the sites,
  381.      including here, which were meant to be synchronized by the
  382.      `broadcast' command that was issued at the originating remote site.
  383.  
  384. `sum' FILE CHECKSUM
  385.      This command is not really meant for interactive use.  It declares
  386.      the CHECKSUM value of a particular FILE at the originating remote
  387.      site.  Also, if at least one `sum' command is received, then it is
  388.      guaranteed that the originating remote site sent one `sum' command
  389.      for each and every file to be synchronized, so any found local
  390.      file which was not subject of any `sum' command does not exist
  391.      remotely.
  392.  
  393. `if' FILE CHECKSUM PACKAGED
  394.      This command is not really meant for interactive use.  It directs
  395.      the `remsync' program to check if a local FILE has a given
  396.      CHECKSUM.  If the checksum agrees, then the local file will be
  397.      replaced by the PACKAGED file, as found in the received
  398.      synchronization invoice.
  399.  
  400. 
  401. File: remsync.info,  Node: Services,  Next: Formats,  Prev: Remsync,  Up: Top
  402.  
  403. Specifications of other service programs
  404. ****************************************
  405.  
  406. * Menu:
  407.  
  408. * Invoking mailshar::   The `mailshar' command and arguments
  409. * Invoking mail-files::  The `mail-files' command and arguments
  410. * Invoking find-mailer::  The `find-mailer' command and arguments
  411.  
  412. 
  413. File: remsync.info,  Node: Invoking mailshar,  Next: Invoking mail-files,  Prev: Services,  Up: Services
  414.  
  415. The `mailshar' command and arguments
  416. ====================================
  417.  
  418. 
  419. File: remsync.info,  Node: Invoking mail-files,  Next: Invoking find-mailer,  Prev: Invoking mailshar,  Up: Services
  420.  
  421. The `mail-files' command and arguments
  422. ======================================
  423.  
  424. 
  425. File: remsync.info,  Node: Invoking find-mailer,  Prev: Invoking mail-files,  Up: Services
  426.  
  427. The `find-mailer' command and arguments
  428. =======================================
  429.  
  430. 
  431. File: remsync.info,  Node: Formats,  Next: Miscellaneous,  Prev: Services,  Up: Top
  432.  
  433. Related file formats
  434. ********************
  435.  
  436. * Menu:
  437.  
  438. * Xremsync::            Format of the `.remsync' file
  439. * Package::             Format of transiting packages
  440.  
  441. 
  442. File: remsync.info,  Node: Xremsync,  Next: Package,  Prev: Formats,  Up: Formats
  443.  
  444. Format of the `.remsync' file
  445. =============================
  446.  
  447.    The `.remsync' file saves all the information a site needs for
  448. properly synchronizing a directory tree with remote sites.  Even if it
  449. is meant to be editable using any ASCII editor, it has a very precise
  450. format and one should be very careful while modifying it.  The
  451. `.remsync' file is better handled through the `remsync' program and
  452. commands.
  453.  
  454.    The `.remsync' file is made up of statements, one per line.  Each
  455. line begins with a statement keyword followed by a single TAB, then by
  456. one or more parameters.  The keyword may be omitted, in this case, the
  457. keyword is said to be *empty*, and the line begins immediately with the
  458. TAB.  After the TAB, if there are two parameters or more, they should
  459. all be separated with a single space.  There should not be any space
  460. between the last parameter and the end of line (unless there are
  461. explicit empty parameters).
  462.  
  463.    The following table gives the possible keywords.  Their order of
  464. presentation in the table is also the order of appearance in the
  465. `.remsync' file.
  466.  
  467. `remsync'
  468.      This statement identifies the `.remsync' format.  The only
  469.      parameter states the file format version.
  470.  
  471. `local'
  472.      This statement should appear exactly once, and has exactly two
  473.      parameters.  The first parameter gives the electronic mail address
  474.      the other sites should use for sending synchronization packages
  475.      here.  The second parameter gives the name of the local directory
  476.      tree to synchronize, in absolute notation.
  477.  
  478. `remote'
  479.      This statement may appear zero, one or more times.  Each occurrence
  480.      connects the synchronized directory tree to another tree on a
  481.      remote site.  The first parameter gives one electronic mail
  482.      address where to send remote synchronization packages.  The second
  483.      parameter gives the name of the corresponding directory tree for
  484.      this remote electronic mail address, in absolute notation.
  485.  
  486. `scan'
  487.      This statement may appear zero, one or more times.  When it does
  488.      not appear at all, the whole local directory tree will always be
  489.      scanned, searching for files to synchronize.  When the statement
  490.      appears at least once, the whole local directory tree will not be
  491.      scanned, but only those files or directories appearing in one of
  492.      these statements.  Each `scan' statement has exactly one
  493.      parameter, giving one file or directory to be studied.  These are
  494.      usually given relative to top directory of the local
  495.      synchronization directory tree.  Shell wildcards are acceptable.
  496.  
  497. `ignore'
  498.      This statement may appear zero, one or more times.  Each
  499.      occurrence has one parameter giving a regular expression,
  500.      according to Perl syntax for regular expressions.  These REGEXPs
  501.      are applied against each file resulting from the scan.  If any of
  502.      the `ignore' expression matches one of resulting file, the file is
  503.      discarded and is not subject to remote synchronization.
  504.  
  505.    After all the statements beginning by the previous keywords, the
  506. `.remsync' file usually contains many statements having the empty
  507. keyword.  The empty keyword statement may appear zero, one or more
  508. times.  Each occurrence list one file being remotely synchronized.  The
  509. first parameter gives an explicit file name, usually given relative to
  510. the top directory of the local synchronized directory tree.  Shell
  511. wildcards are *not* acceptable.
  512.  
  513.    Besides the file name parameter, there are supplementary parameters
  514. to each empty keyword statement, each corresponding to one remote
  515. statement in the `.remsync' file.  The second parameter corresponds to
  516. the first remote, the third parameter corresponds to the second remote,
  517. etc.  If there are more remote statements than supplementary parameters,
  518. missing parameters are considered to be empty.
  519.  
  520.    Each supplementary parameter usually gives the last known checksum
  521. value for this particular file, as computed on its corresponding
  522. *remote* site.  The parameter contains a dash `-' while the remote
  523. checksum is unknown.  The checksum value for the *local* copy of the
  524. file is never kept anywhere in the `.remsync' file.  The special value
  525. `666' indicates a checksum from hell, used when the remote file is
  526. known to exist, but for which contradictory information has been
  527. received from various sources.
  528.  
  529. 
  530. File: remsync.info,  Node: Package,  Prev: Xremsync,  Up: Formats
  531.  
  532. Format of transiting packages
  533. =============================
  534.  
  535. 
  536. File: remsync.info,  Node: Miscellaneous,  Prev: Formats,  Up: Top
  537.  
  538. Various considerations
  539. **********************
  540.  
  541. * Menu:
  542.  
  543. * News::                Using News distribution instead?
  544. * Previous::            Documentation for obsolete scripts
  545.  
  546. 
  547. File: remsync.info,  Node: News,  Next: Previous,  Prev: Miscellaneous,  Up: Miscellaneous
  548.  
  549. Using News distribution instead?
  550. ================================
  551.  
  552.    One correspondent thinks that perhaps the news distribution mechanism
  553. could be pressed into service for this job.  I could have started from
  554. C-news, say, instead of from scratch, and have progressively bent
  555. C-news to behave like I wanted.
  556.  
  557.    My feeling is that the route was shorter as I did it, from scratch,
  558. that it would have been from C-news.  Of course, I could have removed
  559. the heavy administrative details of C-news: the history and `expire',
  560. the daemons, the `cron' entries, etc., then added the interactive
  561. features and specialized behaviors, but all this clean up would
  562. certainly have took energies.  Right now, non counting the subsidiary
  563. scripts and shar/unshar sources, the heart of the result is a single
  564. (1200 lines) script written in Perl, which I find fairly more smaller
  565. and maintainable than a patched C-news distribution would have been.
  566.  
  567. 
  568. File: remsync.info,  Node: Previous,  Prev: News,  Up: Miscellaneous
  569.  
  570. Documentation for obsolete scripts
  571. ==================================
  572.  
  573.    This is merely a place holder for previous documentation, waiting
  574. that I clean it up.  You have no interest in reading further down.
  575.  
  576. * Menu:
  577.  
  578. * mailsync::            mailsync
  579. * resync::              resync
  580.  
  581. 
  582. File: remsync.info,  Node: mailsync,  Next: resync,  Prev: Previous,  Up: Previous
  583.  
  584. mailsync
  585. --------
  586.  
  587.      Usage: mailsync [ OPTION ] ... [ EMAIL_ADDRESS ] [ DIRECTORY ]
  588.         or: mailsync [ OPTION ] ... SYNC_DIRECTORY
  589.  
  590.    Option -i simply sends a `ihave' package, with no bulk files.
  591. Option -n inhibits any destructive operation and mailing.
  592.  
  593.    In the first form of the call, find a synchronisation directory in
  594. DIRECTORY aimed towards some EMAIL_ADDRESS, then proceed with this
  595. synchronisation directory.  EMAIL_ADDRESS may be the name of a file
  596. containing a distribution list.  If EMAIL_ADDRESS is not specified, all
  597. the synchronisation directories at the top level in DIRECTORY are
  598. processed in turn.  If DIRECTORY is not specified, the current
  599. directory is used.
  600.  
  601.    In the second form of the call, proceed only with the given
  602. synchronisation directory SYNC_DIRECTORY.
  603.  
  604.    For proceeding with a synchronisation directory, whatever the form of
  605. the call was, this script reads the `ident' files it contains to set
  606. the local user and directory and the remote user and directory.  Then,
  607. selected files under the local directory which are modified in regard
  608. to the corresponding files in the remote directory are turned into a
  609. synchronisation package which is mailed to the remote user.
  610.  
  611.    The list of selected files or directories to synchronize from the
  612. local directory are given in the `list' file in the synchronisation
  613. directory.  If this `list' file is missing, all files under the local
  614. directory are synchronized.
  615.  
  616.    What I usually do is to `cd' at the top of the directory tree to be
  617. synchronized, then to type `mailsync' without parameters.  This will
  618. automatically prepare as many synchronisation packages as there are
  619. mirror systems, then email multipart shars to each of them.  Note that
  620. the synchronisation package is not identical for each mirror system,
  621. because they do not usually have the same state of synchronisation.
  622.  
  623.    `mailsync' will refuse to work if anything needs to be hand cleaned
  624. from a previous execution of `mailsync' or `resync'.  Check for some
  625. remaining `_syncbulk' or `_synctemp' directory, or for a `_syncrm'
  626. script.
  627.  
  628.      TODO:
  629.      - interrogate the user if `ident' file missing.
  630.      - automatically construct the local user address.
  631.      - create the synchronisation directory on the fly.
  632.      - avoid duplicating work as far as possible for multiple sends.
  633.      - have a quicker mode, depending on stamps, not on checksums.
  634.      - never send core, executables, backups, `.nsf*', `*/_synctemp/*', etc.
  635.  
  636. 
  637. File: remsync.info,  Node: resync,  Prev: mailsync,  Up: Previous
  638.  
  639. resync
  640. ------
  641.  
  642.      Usage: resync [ OPTION ]... TAR_FILE
  643.         or: resync [ OPTION ]... UNTARED_DIRECTORY
  644.  
  645.    Given a tar file produced by mailsync at some remote end and already
  646. reconstructed on this end using unshar, or a directory containing the
  647. already untared invoice, apply the synchronization package locally.
  648.  
  649.    Option -n inhibits destroying or creating files, but does everything
  650. else.  It will in particular create a synchronization directory if
  651. necessary, produce the `_syncbulk' directory and the `_syncrm' script.
  652.  
  653.    The synchronization directory for the package is automatically
  654. retrieved or, if not found, created and initialized.  `resync' keeps
  655. telling you what it is doing.
  656.  
  657.    There are a few cases when a resync should not complete without
  658. manual intervention.  The common case is that several sites update the
  659. very same files differently since they were last resync'ed, and then
  660. mailsync to each other.  The prerequisite checksum will then fail, and
  661. the files are then kept into the `_syncbulk' tree, which has a shape
  662. similar to the directory tree in which the files where supposed to go.
  663. For GNU Emacs users, a very handy package, called emerge, written by
  664. Dale Worley <drw@kutta.mit.edu>, helps reconciling two files
  665. interactiveley.  The `_syncbulk' tree should be explicitely deleted
  666. after the hand synchronisation.
  667.  
  668.    Another case of human intervention is when files are deleted at the
  669. mailsync'ing site.  By choice, all deletions on the receiving side are
  670. accumulated in a `_syncrm' script, which is not executed automatically.
  671. Explicitely executed, `_syncrm' will remove any file in the receiving
  672. tree which does not exist anymore on the sender system.  I often edit
  673. `_syncrm' before executing it, to remove the unwanted deletions (beware
  674. the double negation :-).  The script removes itself.
  675.  
  676.    All the temporary files, while resynchronizing, are held in
  677. `_synctemp', which is deleted afterwards; if something goes wrong, this
  678. directory should also be cleaned out by hand.  `resync' will refuse to
  679. work if anything remains to be hand cleaned.
  680.  
  681.      TODO:
  682.      - interrogates the user if missing receiving directory in `ident'.
  683.      - allow `remote.sum' to be empty or non-existent.
  684.  
  685.  
  686. 
  687. Tag Table:
  688. Node: Top942
  689. Node: Overview2742
  690. Node: Internals3868
  691. Node: Quick start7142
  692. Node: Remsync7280
  693. Node: Invoking remsync7622
  694. Node: Conveniences9180
  695. Node: Commands11084
  696. Node: Services16240
  697. Node: Invoking mailshar16605
  698. Node: Invoking mail-files16788
  699. Node: Invoking find-mailer16987
  700. Node: Formats17162
  701. Node: Xremsync17410
  702. Node: Package21832
  703. Node: Miscellaneous21962
  704. Node: News22205
  705. Node: Previous23229
  706. Node: mailsync23583
  707. Node: resync26135
  708. 
  709. End Tag Table
  710.